package utils;

public class ArrayUtils {
    //私有无参
    private ArrayUtils() {
    }

    //成员变量
    public static String author = "Damon";

    //求和
    public static int sum(int[] arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    //求最值
    public static int getMax(int[] arr){
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max){
                max = arr[i];
            }
        }
        return max;
    }

    public static int getMin(int[] arr){
        int min = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] < min){
                min = arr[i];
            }
        }
        return min;
    }

    //查找 第一次出现和最后一次出现
    public static int indexOf(int[] arr,int num){
        for (int i = 0; i < arr.length; i++) {
            if (num == arr[i]){
                return i;
            }
        }
        return -1;
    }

    public static int lastIndexOf(int[] arr,int num){
        //定义一个初始索引
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if (num == arr[i]){
                index = i;
            }
        }
        return index;
    }

    //漂亮打印
    public static void printArray(int[] arr){
        System.out.print("arr : [");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1){
                System.out.println(arr[i] + "]");
            }else{
                //不是最后一个元素
                System.out.print(arr[i] + ", ");
            }
        }
    }

    //排序
    public static void sort(int[] arr){
        //冒泡
        for (int j = 0; j < arr.length - 1; j++) {
            for (int i = 0; i < arr.length - 1 - j; i++) {
                if (arr[i] > arr[i + 1]){
                    //交换位置
                    int temp = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = temp;
                }
            }
        }

        //Arrays.sort(arr);//底层是快速排序
    }

    //翻转
    public static void reverse(int[] arr){

        //定义变量 : 一行可以定义多个变量 前提: 这多个变量必须是同类型
        //联动for
        for(int startIndex = 0,endIndex = arr.length-1;startIndex < endIndex;startIndex++,endIndex--){
            //交换代码
            int temp = arr[startIndex];
            arr[startIndex] = arr[endIndex];
            arr[endIndex] = temp;
        }
    }
}

